Operations:

Format

Syntax:

Operation:

Operands:

Architecture revision

Opcode

1

psubs.ub Rd, Rx, Ry

Rd[31:24] = SATSU(ZE(Rx[31:24], 9) - ZE(Ry[31:24], 9), 8) ; 
Rd[23:16] = SATSU(ZE(Rx[23:16], 9) - ZE(Ry[23:16], 9), 8);
Rd[15:8] = SATSU(ZE(Rx[15:8], 9) - ZE(Ry[15:8], 9), 8); 
Rd[7:0] = SATSU(ZE(Rx[7:0], 9) - ZE(Ry[7:0], 9), 8);
I, II, III, IV.{d, x, y} ∈ {0, 1, …, 15}

Rev1+

111

Rx

00000

Ry

001000110101

Rd

3

4

5

4

12

4

2

psubs.sb Rd, Rx, Ry

Rd[31:24] = SATS(SE(Rx[31:24], 9) - SE(Ry[31:24], 9), 8); 
Rd[23:16] = SATS(SE(Rx[23:16], 9) - SE(Ry[23:16], 9), 8);
Rd[15:8] = SATS(SE(Rx[15:8], 9) - SE(Ry[15:8], 9), 8); 
Rd[7:0] = SATS(SE(Rx[7:0], 9) - SE(Ry[7:0], 9), 8);
I, II, III, IV.{d, x, y} ∈ {0, 1, …, 15}

Rev1+

111

Rx

00000

Ry

001000110011

Rd

3

4

5

4

12

4

3

psubs.uh Rd, Rx, Ry

Rd[31:16] = SATSU(ZE(Rx[31:16], 17) - ZE(Ry[31:16], 17), 16);
Rd[15:0] = SATSU(ZE(Rx[15:0], 17) - ZE(Ry[15:0], 17), 16);
I, II, III, IV.{d, x, y} ∈ {0, 1, …, 15}

Rev1+

111

Rx

00000

Ry

001000001001

Rd

3

4

5

4

12

4

4

psubs.sh Rd, Rx, Ry

Rd[31:16] = SATS(SE(Rx[31:16], 17) - SE(Ry[31:16], 17), 16);
Rd[15:0] = SATS(SE(Rx[15:0], 17) - SE(Ry[15:0], 17), 16);
I, II, III, IV.{d, x, y} ∈ {0, 1, …, 15}

Rev1+

111

Rx

00000

Ry

001000000101

Rd

3

4

5

4

12

4

Description

Perform subtraction of four pairs of packed bytes or two pairs of halfwords. The result is satu- rated to either unsigned bytes (psubs.ub), signed bytes (psubs.sb), unsigned halfwords (psubs.uh) or signed halfwords (psubs.sh).

Status Flags:

Q:

Flag set if saturation occured in one or more of the partial operations.

V:

Not affected.

N:

Not affected.

Z:

Not affected.

C:

Not affected.